package com.javacoo.junit.generator.internal;

import java.util.List;
import java.util.Optional;

import com.javacoo.junit.generator.api.ImplementFinder;

/**
 * 实现类或者子类查找器
 * <li>默认从当前类路径查找</li>
 * @author duanyong@jccfc.com
 * @date 2021/1/6 10:45
 */
public class DefaultImplementFinder implements ImplementFinder {

    /**
     * 查找抽象类或者接口实现类
     * <li></li>
     *
     * @param abstractClass : 抽象类或者接口
     * @author duanyong@jccfc.com
     * @date 2021/1/7 11:40
     * @return: java.util.List<java.lang.Class> 实现类集合
     */
    @Override
    public Optional<List<Class>> find(Class abstractClass) {
        try {
            return Optional.ofNullable(ObjectFactory.getAllAssignedClass(abstractClass));
        } catch (Exception e) {
            e.printStackTrace();
        }
        return Optional.empty();
    }
}
